package com.oneday.nuo.base.service.impl;


import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.oneday.nuo.base.common.CheckRepeat;
import com.oneday.nuo.base.common.NuoUtil;
import com.oneday.nuo.base.config.BaseService;
import com.oneday.nuo.base.dao.NuoDictDAO;
import com.oneday.nuo.base.dto.NuoDictDTO;
import com.oneday.nuo.base.entity.NuoDictEntity;
import com.oneday.nuo.base.service.NuoDictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * (NuoDict)表服务实现类
 *
 * @author liushuai
 * @since 2021-03-13 23:37:15
 */
@Service("nuoDictService")
public class NuoDictServiceImpl extends BaseService<NuoDictDAO, NuoDictEntity> implements NuoDictService {

    @Autowired
    private NuoDictDAO nuoDictDao;


    @Override
    public void saveDict(NuoDictDTO nuoDictDTO) {
        CheckRepeat<NuoDictEntity> checkRepeat = new CheckRepeat<>();
        checkRepeat.queryFieldIsExist(NuoDictEntity::getCode,nuoDictDTO.getCode(),nuoDictDTO.getId(),nuoDictDao,NuoDictEntity.class);
        NuoDictEntity entity = Convert.convert(NuoDictEntity.class, nuoDictDTO);
        this.saveOrUpdate(entity);
    }

    @Override
    public IPage<NuoDictDTO> queryDictPageByParam(Page page, NuoDictDTO queryDTO) {
        LambdaQueryWrapper<NuoDictEntity> wrapper = new LambdaQueryWrapper();
        wrapper.like(StrUtil.isNotEmpty(queryDTO.getName()),NuoDictEntity::getName,queryDTO.getName());
        wrapper.like(StrUtil.isNotEmpty(queryDTO.getCode()),NuoDictEntity::getCode,queryDTO.getCode());
        wrapper.orderByDesc(NuoDictEntity::getCreateDate);
        Page<NuoDictEntity> page1 = nuoDictDao.selectPage(page, wrapper);
        IPage iPage = NuoUtil.convertPage(NuoDictDTO.class, page1);
        return iPage;
    }

    @Override
    public NuoDictDTO queryDictById(String id) {
        NuoDictEntity nuoDictEntity = nuoDictDao.selectById(id);
        return Convert.convert(NuoDictDTO.class,nuoDictEntity);
    }

    @Override
    public void deleteDictById(String id) {
        nuoDictDao.deleteById(id);
    }
}
